package redisClient

import (
	"fmt"
	"time"

	"github.com/garyburd/redigo/redis"
)

// 直接连接
func Connect() redis.Conn {
	pool, _ := redis.Dial("tcp", "152.136.106.251:6379")
	return pool
}

// 连接池连接redis （都用这个）
func PoolConnect() redis.Conn {
	pool := &redis.Pool{
		MaxIdle:         1,  //最大空闲连接数
		MaxConnLifetime: 10, //最大连接数
		IdleTimeout:     180 * time.Second,
		Wait:            true, //超过最大连接数是等待还是报错 （true等待）
		Dial: func() (redis.Conn, error) {
			c, err := redis.Dial("tcp", "152.136.106.251:6379")
			if err != nil {
				return nil, err
			}
			return c, nil
		},
	}

	return pool.Get()
}

func RedisDemo() {
	c := PoolConnect()
	defer c.Close()

	//写入数据
	_, err := c.Do("SET", "go_key", "redigo")
	if err != nil {
		// 设置过期时间
		c.Do("expire", "go_key", 1000)
		fmt.Println("err while setting:", err)
	}

	//获取value并转成字符串
	r, err := redis.String(c.Do("GET", "go_key"))
	if err != nil {
		fmt.Println("err while getting:", err)
	}
	fmt.Println(r)

}
